/*******************************************************************************
  * 文件：PT1000.c
  * 作者：djy
  * 版本：v1.0.0
  * 日期：2021-03-18
  * 说明：PT1000传感器驱动
*******************************************************************************/
#include "PT1000.h"

typedef struct
{
    U16 u16Temper;	// 温度
    U16 u16ADC;		// ADC值
}RTTable_ts;// RT表格式

const static RTTable_ts asPT1000RTTable[] = 
{
    {	0	,	73 	    },
    {	1	,	76 	    },
    {	2	,	79 	    },
    {	3	,	82 	    },
    {	4	,	85 	    },
    {	5	,	88 	    },
    {	6	,	91 	    },
    {	7	,	94 	    },
    {	8	,	97 	    },
    {	9	,	100 	},
    {	10	,	103 	},
    {	11	,	106 	},
    {	12	,	109 	},
    {	13	,	112 	},
    {	14	,	114 	},
    {	15	,	117 	},
    {	16	,	120 	},
    {	17	,	123 	},
    {	18	,	126 	},
    {	19	,	129 	},
    {	20	,	132 	},
    {	21	,	135 	},
    {	22	,	138 	},
    {	23	,	140 	},
    {	24	,	143 	},
    {	25	,	146 	},
    {	26	,	149 	},
    {	27	,	152 	},
    {	28	,	155 	},
    {	29	,	157 	},
    {	30	,	160 	},
    {	31	,	163 	},
    {	32	,	166 	},
    {	33	,	169 	},
    {	34	,	171 	},
    {	35	,	174 	},
    {	36	,	177 	},
    {	37	,	180 	},
    {	38	,	183 	},
    {	39	,	185 	},
    {	40	,	188 	},
    {	41	,	191 	},
    {	42	,	194 	},
    {	43	,	196 	},
    {	44	,	199 	},
    {	45	,	202 	},
    {	46	,	204 	},
    {	47	,	207 	},
    {	48	,	210 	},
    {	49	,	213 	},
    {	50	,	215 	},
    {	51	,	218 	},
    {	52	,	221 	},
    {	53	,	223 	},
    {	54	,	226 	},
    {	55	,	229 	},
    {	56	,	231 	},
    {	57	,	234 	},
    {	58	,	236 	},
    {	59	,	239 	},
    {	60	,	242 	},
    {	61	,	244 	},
    {	62	,	247 	},
    {	63	,	250 	},
    {	64	,	252 	},
    {	65	,	255 	},
    {	66	,	257 	},
    {	67	,	260 	},
    {	68	,	263 	},
    {	69	,	265 	},
    {	70	,	268 	},
    {	71	,	270 	},
    {	72	,	273 	},
    {	73	,	275 	},
    {	74	,	278 	},
    {	75	,	280 	},
    {	76	,	283 	},
    {	77	,	286 	},
    {	78	,	288 	},
    {	79	,	291 	},
    {	80	,	293 	},
    {	81	,	296 	},
    {	82	,	298 	},
    {	83	,	301 	},
    {	84	,	303 	},
    {	85	,	306 	},
    {	86	,	308 	},
    {	87	,	311 	},
    {	88	,	313 	},
    {	89	,	315 	},
    {	90	,	318 	},
    {	91	,	320 	},
    {	92	,	323 	},
    {	93	,	325 	},
    {	94	,	328 	},
    {	95	,	330 	},
    {	96	,	333 	},
    {	97	,	335 	},
    {	98	,	337 	},
    {	99	,	340 	},
    {	100	,	342 	},
    {	101	,	345 	},
    {	102	,	347 	},
    {	103	,	349 	},
    {	104	,	352 	},
    {	105	,	354 	},
    {	106	,	357 	},
    {	107	,	359 	},
    {	108	,	361 	},
    {	109	,	364 	},
    {	110	,	366 	},
    {	111	,	368 	},
    {	112	,	371 	},
    {	113	,	373 	},
    {	114	,	375 	},
    {	115	,	378 	},
    {	116	,	380 	},
    {	117	,	382 	},
    {	118	,	385 	},
    {	119	,	387 	},
    {	120	,	389 	},
    {	121	,	392 	},
    {	122	,	394 	},
    {	123	,	396 	},
    {	124	,	399 	},
    {	125	,	401 	},
    {	126	,	403 	},
    {	127	,	405 	},
    {	128	,	408 	},
    {	129	,	410 	},
    {	130	,	412 	},
    {	131	,	414 	},
    {	132	,	417 	},
    {	133	,	419 	},
    {	134	,	421 	},
    {	135	,	423 	},
    {	136	,	426 	},
    {	137	,	428 	},
    {	138	,	430 	},
    {	139	,	432 	},
    {	140	,	435 	},
    {	141	,	437 	},
    {	142	,	439 	},
    {	143	,	441 	},
    {	144	,	443 	},
    {	145	,	446 	},
    {	146	,	448 	},
    {	147	,	450 	},
    {	148	,	452 	},
    {	149	,	454 	},
    {	150	,	456 	},
    {	151	,	459 	},
    {	152	,	461 	},
    {	153	,	463 	},
    {	154	,	465 	},
    {	155	,	467 	},
    {	156	,	469 	},
    {	157	,	472 	},
    {	158	,	474 	},
    {	159	,	476 	},
    {	160	,	478 	},
    {	161	,	480 	},
    {	162	,	482 	},
    {	163	,	484 	},
    {	164	,	486 	},
    {	165	,	488 	},
    {	166	,	491 	},
    {	167	,	493 	},
    {	168	,	495 	},
    {	169	,	497 	},
    {	170	,	499 	},
    {	171	,	501 	},
    {	172	,	503 	},
    {	173	,	505 	},
    {	174	,	507 	},
    {	175	,	509 	},
    {	176	,	511 	},
    {	177	,	513 	},
    {	178	,	515 	},
    {	179	,	518 	},
    {	180	,	520 	},
    {	181	,	522 	},
    {	182	,	524 	},
    {	183	,	526 	},
    {	184	,	528 	},
    {	185	,	530 	},
    {	186	,	532 	},
    {	187	,	534 	},
    {	188	,	536 	},
    {	189	,	538 	},
    {	190	,	540 	},
    {	191	,	542 	},
    {	192	,	544 	},
    {	193	,	546 	},
    {	194	,	548 	},
    {	195	,	550 	},
    {	196	,	552 	},
    {	197	,	554 	},
    {	198	,	556 	},
    {	199	,	558 	},
    {	200	,	560 	},
    {	201	,	562 	},
    {	202	,	564 	},
    {	203	,	565 	},
    {	204	,	567 	},
    {	205	,	569 	},
    {	206	,	571 	},
    {	207	,	573 	},
    {	208	,	575 	},
    {	209	,	577 	},
    {	210	,	579 	},
    {	211	,	581 	},
    {	212	,	583 	},
    {	213	,	585 	},
    {	214	,	587 	},
    {	215	,	589 	},
    {	216	,	591 	},
    {	217	,	592 	},
    {	218	,	594 	},
    {	219	,	596 	},
    {	220	,	598 	},
    {	221	,	600 	},
    {	222	,	602 	},
    {	223	,	604 	},
    {	224	,	606 	},
    {	225	,	607 	},
    {	226	,	609 	},
    {	227	,	611 	},
    {	228	,	613 	},
    {	229	,	615 	},
    {	230	,	617 	},
    {	231	,	619 	},
    {	232	,	620 	},
    {	233	,	622 	},
    {	234	,	624 	},
    {	235	,	626 	},
    {	236	,	628 	},
    {	237	,	630 	},
    {	238	,	632 	},
    {	239	,	633 	},
    {	240	,	635 	},
    {	241	,	637 	},
    {	242	,	639 	},
    {	243	,	641 	},
    {	244	,	642 	},
    {	245	,	644 	},
    {	246	,	646 	},
    {	247	,	648 	},
    {	248	,	650 	},
    {	249	,	651 	},
    {	250	,	653 	},
    {	251	,	655 	},
    {	252	,	657 	},
    {	253	,	659 	},
    {	254	,	660 	},
    {	255	,	662 	},
    {	256	,	664 	},
    {	257	,	666 	},
    {	258	,	667 	},
    {	259	,	669 	},
    {	260	,	671 	},
    {	261	,	673 	},
    {	262	,	674 	},
    {	263	,	676 	},
    {	264	,	678 	},
    {	265	,	680 	},
    {	266	,	681 	},
    {	267	,	683 	},
    {	268	,	685 	},
    {	269	,	686 	},
    {	270	,	688 	},
    {	271	,	690 	},
    {	272	,	692 	},
    {	273	,	693 	},
    {	274	,	695 	},
    {	275	,	697 	},
    {	276	,	698 	},
    {	277	,	700 	},
    {	278	,	702 	},
    {	279	,	704 	},
    {	280	,	705 	},
    {	281	,	707 	},
    {	282	,	709 	},
    {	283	,	710 	},
    {	284	,	712 	},
    {	285	,	714 	},
    {	286	,	715 	},
    {	287	,	717 	},
    {	288	,	719 	},
    {	289	,	720 	},
    {	290	,	722 	},
    {	291	,	724 	},
    {	292	,	725 	},
    {	293	,	727 	},
    {	294	,	729 	},
    {	295	,	730 	},
    {	296	,	732 	},
    {	297	,	733 	},
    {	298	,	735 	},
    {	299	,	737 	},
    {	300	,	738 	},
    {	301	,	740 	},
    {	302	,	742 	},
    {	303	,	743 	},
    {	304	,	745 	},
    {	305	,	747 	},
    {	306	,	748 	},
    {	307	,	750 	},
    {	308	,	751 	},
    {	309	,	753 	},
    {	310	,	755 	},
};

/*******************************************************************************
  * 函数名：NTC_GetTemperFromPT1000Table
  * 功  能：NTC查表求温度
  * 参  数：U16 u16ADC：ADC值
  * 返回值：U16 u16Temp:对应的温度值
  * 说  明：PT1000温度-adc转换表，ADC计算公式为(((Rx/(Rx+2700))*1024)-256)*3.9；
*******************************************************************************/
U16 NTC_GetTemperFromPT1000Table(U16 u16ADC)
{
    U16 u16Index;

    if(u16ADC < asPT1000RTTable[0].u16ADC)
    {
        // ADC小于最小值，温度低于0度，直接返回0
        return 0;
    }
    else if(u16ADC > asPT1000RTTable[ARRAY_SIZE(asPT1000RTTable)-1].u16ADC)
    {
        // ADC大于最大值，温度超过310度，直接返回310
        return 310;
    }
    else
    {
        // 遍历RT表，查找对应的温度
        for(u16Index = 0;u16Index < ARRAY_SIZE(asPT1000RTTable);u16Index++)
        {
        	// 查表到温度区间
            if(u16ADC < asPT1000RTTable[u16Index+1].u16ADC && u16ADC >= asPT1000RTTable[u16Index].u16ADC)
            {
            	// 返回ADC距离最近的温度点
				if((u16ADC - asPT1000RTTable[u16Index].u16ADC) <= (asPT1000RTTable[u16Index+1].u16ADC - u16ADC))
				{
					return asPT1000RTTable[u16Index].u16Temper;
				}
				else
				{
					return asPT1000RTTable[u16Index+1].u16Temper;
				}
            }
        } 
        return 0;
    }
}

